約 6,680,631 件
https://w.atwiki.jp/arduino/pages/49.html
秋月の100円フルカラーLED( http //akizukidenshi.com/catalog/g/gI-02476/ )を制御してみます。 抵抗の計算 赤(Vf=2.0V) (5V-2.0V)/0.015A=200Ω 緑(Vf=3.0V) (5V-3.0V)/0.015A=133Ω 青(Vf=3.5V) (5V-3.5V)/0.015A=100Ω とりあえず全部220Ω。 3軸加速度センサーにRGBを連動させてみる int xPin = 0; int yPin = 1; int zPin = 2; int rPin = 9; int gPin = 10; int bPin = 11; long count = 0; void setup() { Serial.begin(38400); pinMode(rPin, OUTPUT); pinMode(gPin, OUTPUT); pinMode(bPin, OUTPUT); } int xPrev=128, xVal=0; int yPrev=128, yVal=0; int zPrev=128, zVal=0; void loop() { int x = analogRead(xPin); int y = analogRead(yPin); int z = analogRead(zPin); if(true){ int dx = abs(xPrev-x); int dy = abs(yPrev-y); int dz = abs(zPrev-z); if(dx dy dx dz){ dy=0; dz=0; } if(dy dx dy dz){ dx=0; dz=0; } if(dz dx dz dy){ dx=0; dy=0; } xVal += dx/2; yVal += dy/2; zVal += dz/2; xPrev = x; yPrev = y; zPrev = z; xVal = xVal-xVal/400-1; yVal = yVal-yVal/400-1; zVal = zVal-zVal/400-1; xVal = min(25500, max(0, xVal)); yVal = min(25500, max(0, yVal)); zVal = min(25500, max(0, zVal)); analogWrite(rPin, constrain(sqrt(xVal),0,255)); analogWrite(gPin, constrain(sqrt(yVal),0,255)); analogWrite(bPin, constrain(sqrt(zVal),0,255)); delay(2); }else{ x = min(255, max(0, x-384)); y = min(255, max(0, y-384)); z = min(255, max(0, z-384)); analogWrite(rPin, x*3/16); analogWrite(gPin, y*7/16); analogWrite(bPin, z*1/16); } /* // for arduinoscope for (int i=0;i 6;i++){ Serial.print(analogRead(i)); Serial.print(" "); } Serial.println(); */ count++; }
https://w.atwiki.jp/arduino/pages/22.html
ArduinoをAVRライタとして使う Arduino Duemilanoveと「AVRライタにするスケッチ」を使って C言語で開発したプログラムをtiny2313vに書き込みます。 1. 配線 Arduino tiny2313V 色 5V Vcc(20) 赤 Gnd GND(10) 黒 13 SCK(19) 青 12 MISO(18) 緑 11 MOSI(17) 黄 10 RESET(1) 白 2. スケッチを実行 http //www15.atwiki.jp/arduino?cmd=upload act=open pageid=22 file=AVRProg.pde を実行する。 3. TODO avrdudeで使えるプロトコルを実装する。 参考サイト http //arms22.blog91.fc2.com/blog-entry-219.html http //www.arduino.cc/playground/Code/Programmer2 http //www.arduino.cc/playground/uploads/Code/programmer2.txt
https://w.atwiki.jp/arduino/pages/48.html
Arduinoで簡易的なオシロスコープ的なことができます。 試してみる http //accrochages.drone.ws/en/node/90 これを元に作られたアプリを http //code.google.com/p/arduinoscope/ ここからダウンロードできます。 Arduinoに入れるスケッチ http //arduinoscope.googlecode.com/files/arduino_oscilliscope.pde オシロアプリ http //arduinoscope.googlecode.com/files/application.macosx.zip http //arduinoscope.googlecode.com/files/application.linux.zip http //arduinoscope.googlecode.com/files/application.windows.zip Arduinoで新規スケッチ作成し、arduino_oscilliscope.pdeをコピペし保存。実行。 オシロアプリを起動!で普通は動きそうだがだめだった。 Processingで実行 ウインドウのサイズとかチャンネル数とかを変えたいし。 Processingを入れる。http //www.processing.org/download/ 1.0.5 インストールしてなにかサンプルを実行してみる。 controlP5ライブラリを入れる。http //www.sojamo.de/libraries/controlP5/ 解凍して、[processingのSketchbookフォルダ]/libraries/controlP5となるように配置。 arduinoscope.pde オシロアプリのZIPの中にあるarduinoscope.pdeをコピーしてProcessingで実行する。 Fontの作成 Fontデータをを自分で作る必要がある。 http //labs.uechoco.com/blog/2008/02/processingvlw.html 好きなフォントデータを作ってソースのフォント名を直して再実行。 シリアル通信速度の変更 ArduinoのスケッチとProcessingのスケッチの中にある速度指定の値を2カ所書き換える。 デフォルトでは115200になっているが、このままだと信号の波形がガタガタだった。 38400まで落とすとなめらかになった。
https://w.atwiki.jp/ylabarduino/pages/13.html
Arduino Arduinoの派生物 その他マイコン
https://w.atwiki.jp/arduino/pages/62.html
Chanさんの「赤外線リモコン制御モジュール」 http //elm-chan.org/fsw/irctrl/00index.html をArduinoのライブラリにしてみました。 ライブラリとして2つのファイルを配置してください。 libraries/IrCtrl/IrCtrl.cpp libraries/IrCtrl/IrCtrl.h Counter1とTimer2を使うのでArduino標準のPWMがいくつか使えなくなっているはずです。 サンプルスケッチ IrCtrlTest.pde #include Debounce.h #include IrCtrl.h int PIN_LED = 13; int PIN_IR_IN = 8; // PB0 ICP1 Counter1 int PIN_IR_OUT = 3; // PD3 OC2B Timer2 int PIN_BUTTON_1 = 2; Debounce button1 = Debounce(20, PIN_BUTTON_1); void setup() { Serial.begin(115200); pinMode(PIN_LED, OUTPUT); pinMode(PIN_BUTTON_1, INPUT); digitalWrite(PIN_BUTTON_1, HIGH); // pull-up pinMode(PIN_IR_OUT, OUTPUT); pinMode(PIN_IR_IN, INPUT); digitalWrite(PIN_IR_IN, HIGH); // pull-up IR_initialize(); Serial.println("IR remote control test program"); } void loop() { // digitalWrite(PIN_LED, !digitalRead(PIN_IR)); ir_recv_loop(); if(button1.update() !button1.read()){ if (IR_xmit(AEHA, (uint8_t*)"\xAA\x5A\x8F\x12\x14\xF1", 6*8)){ Serial.println("OK AQUOS VOLUME UP"); } } } void ir_recv_loop(void) { if(IrCtrl.state!=IR_RECVED){ return; } uint8_t d, i, l; uint16_t a; l = IrCtrl.len; switch (IrCtrl.fmt) {/* Which frame arrived? */ #if IR_USE_NEC case NEC /* NEC format data frame */ if (l == 32) {/* Only 32-bit frame is valid */ Serial.print("N "); Serial.print(IrCtrl.buff[0], HEX); Serial.print(" "); Serial.print(IrCtrl.buff[1], HEX); Serial.print(" "); Serial.print(IrCtrl.buff[2], HEX); Serial.print(" "); Serial.print(IrCtrl.buff[3], HEX); Serial.println(); } break; case NEC|REPT /* NEC repeat frame */ Serial.println("N repeat"); break; #endif #if IR_USE_AEHA case AEHA /* AEHA format data frame */ if ((l = 48) (l % 8 == 0)) {/* Only multiple of 8 bit frame is valid */ Serial.print("A"); l /= 8; for (i = 0; i l; i++){ Serial.print(" "); Serial.print(IrCtrl.buff[i], HEX); } Serial.println(); } break; case AEHA|REPT /* AEHA format repeat frame */ Serial.println("A repeat"); break; #endif #if IR_USE_SONY case SONY d = IrCtrl.buff[0]; a = ((uint16_t)IrCtrl.buff[2] 9) + ((uint16_t)IrCtrl.buff[1] 1) + ((d 0x80) ? 1 0); d = 0x7F; switch (l) {/* Only 12, 15 or 20 bit frames are valid */ case 12 //xprintf(PSTR("S12 %u %u\n"), d, a 0x1F); Serial.print("S12 "); Serial.print(d, HEX); Serial.print(" "); Serial.print(a 0x1F, HEX); Serial.println(); break; case 15 //xprintf(PSTR("S15 %u %u\n"), d, a 0xFF); Serial.print("S15 "); Serial.print(d, HEX); Serial.print(" "); Serial.print(a 0xFF, HEX); Serial.println(); break; case 20 //xprintf(PSTR("S20 %u %u\n"), d, a 0x1FFF); Serial.print("S20 "); Serial.print(d, HEX); Serial.print(" "); Serial.print(a 0x1FFF, HEX); Serial.println(); break; } break; #endif } IrCtrl.state = IR_IDLE;/* Ready to receive next frame */ }
https://w.atwiki.jp/nakamura001/pages/80.html
タイトル 内容 Firefox 3.6から搭載の加速度センサーのサンプルを試してみた - 強火で進め Firefoxのページのサンプルを試してみた Firefox 3.6から搭載の加速度センサーで画像を動かすサンプルを作ってみた - 強火で進め 画像が移動するサンプルを作ってみた
https://w.atwiki.jp/arduino/pages/34.html
計画 朝になったら自動でカーテンを開ける目覚まし時計を作りたい。 カーテンの端っこにひもを引っかけて朝になったらタイマーが作動してひもを巻き取りカーテンが開くという仕組み。 材料 Arduino2009 モータードライバ BD6211F ←いただきもの 6速ギヤボックスHE リアルタイムクロック ブレッドボード ひも&フック(カーテンを引っ張る) 円柱ゴム(ひもを巻き取る) 木の板&ねじ 抵抗とかコンデンサとか配線材とか 消費電流 RE-260 http //www.mabuchi-motor.co.jp/motorize/branch/b_0100.html 適正電圧適正負荷で700mA 負荷によって変わるだろうから動作させながら実測する! 6速ギヤボックスHE 広いギヤ比に組み替えられるのでとりあえずこれにした。 クラッチギアが付いているので大きい負荷がかかっても少し安心。 完成品は mega88 Arduino内蔵クロックで動かす。 過電流で電源を止めるやつをつける。ポリスイッチ? 電源 開発時はUSB 5V ACアダプタ 5V or 3V http //www.switch-science.com/trac/wiki/BD62xx-Basic モーターの定格電圧が信号系(マイコン)の電源電圧よりも低い場合は困ってしまいます。 モーターによっては、PWMで一定のデューティよりも上げないように注意すれば大丈夫な場合があります。 arduinoは3Vで動くのか? モータとArduinoの電源が同じでOK? リアルタイムクロック 秋月の時計IC バッテリバックアップしたい。 ユーザインターフェイス 正回転/逆回転ボタン タイマー時刻の設定/ロータリエンコーダ? 7セグ時計表示 巻き取り終了の検出 マイクでクラッチの音? 一定の秒数の作動でよい? 製作 (1)ざっと組み立て ギアボックス 巻き取り部取り付け ギアボックス&ブレッドボードを板に固定 Arduinoを固定 モータドライバにピン取り付け (2)モータードライバの実験(2009/4/18) 正転/逆転を実験 スピード&パワーを確認 消費電流を確認 スイッチサイエンスさんのスケッチをちょっと改造で動作OK。 http //www.switch-science.com/trac/wiki/BD62xx-Basic int FIN = 5; int RIN = 6; int LED = 13; int OFFSET = 0.7 * 256 / 5; // analogに255を出したら5V = 0.7V int MAX = 3.0 * 256 / 5 - OFFSET; // RE-260なので3V 3.0V-0.7V = 2.7V int degree10 = 0; int i; void setup() { Serial.begin(300); pinMode(FIN, OUTPUT); pinMode(RIN, OUTPUT); pinMode(LED, OUTPUT); for(i=0; i 5; i++){ digitalWrite(LED, HIGH); delay(200); digitalWrite(LED, LOW); delay(200); } } void loop() { delay(10); degree10 += 3; degree10 %= 3600; long v = int(sin(degree10 * 2 * PI / 360 /10) * MAX); Serial.println(v); if (v 0) { analogWrite(FIN, v + OFFSET); // v(0V..2.7V) OFFSET(=0.7V) なので 0.7V..3.0V analogWrite(RIN, 0); } else if (v 0) { analogWrite(FIN, 0); analogWrite(RIN, OFFSET - v); // v(-0V..-2.7V) OFFSET(=0.7V) なので 0.7V..3.0V } else { analogWrite(FIN, 255); analogWrite(RIN, 255); } } 正回転・逆回転をなめらかに繰り返す。 OFFSETは回転開始の最低電圧。 正 0.7V = 0.8V = ... = 2.9V = 3.0V = 2.9V = ... 0.7V 逆 0.7V = 0.8V = ... = 2.9V = 3.0V = 2.9V = ... 0.7V を繰り返す。 ノイズ? たぶんモーターからのノイズのせいでシリアル通信が途中でとぎれてしまう。 まともにデバッグできないと困るので対策が必要かもしれない。 http //www.picfun.com/motorframe.html モーターの端子と金属ケースの間にコンデンサをいれるといいらしい。 (3)リアルタイムクロック確認(2009/4/19) http //nekosan0.bake-neko.net/connection_rtc.html nekosanのコードでOK。 よく考えたら毎日同じ時間に作動させる必要はなくて、「6時間後に作動」でいいわけだからRTCいらないや。 プログラムも簡単だ。内蔵RCで誤差はどれぐらいか?外部クリスタルつけたら誤差はどれくらい? (4)時計表示(2009/4/19) 7セグ2桁で作動までの残り時間を出せばいい。上の桁が時間、下の桁が10分単位で十分。 いや、もっと簡単にLEDの点滅回数でいい。5回点滅なら5時間。 (5)モーターから音を出す。 普通にモーターを回すときでもPWMの周波数で微妙に音が出てしまう。 てことは、適当にメロディーになるようにモーターに信号を与えたら・・・ 成功! スピーカーなしでBEEP音によるフィードバックが可能になった。 ArduinoのPWM周波数 http //www.musashinodenpa.com/arduino/ref/index.php?f=0 pos=1921 によると PWM信号の周波数は約490Hzです。 http //www.arduino.cc/en/Tutorial/PWM には Arduino s PWM frequency at about 500Hz とある。 しかし、http //www.rohm.co.jp/products/databook/motor/pdf/bd621x_series-j.pdf には 20k〜100kHz を入力しなさいとある。 とりあえず完成 黄色ボタンを押すたびに、「ひも出し」「ひも巻き取り」「停止」 緑ボタンはタイマー時間設定。1時間単位。押すたびにモーターから音を出して操作を確認できる。 タイマー作動後は小鳥のさえずりっぽい音を出してさわやかに目覚める。 /* Curtains Timer */ #include Debounce.h // http //www.arduino.cc/playground/Code/Debounce int FIN = 5; int RIN = 6; int LED = 13; int SW_YELLOW = 3; int SW_GREEN = 2; Debounce sw_yellow = Debounce(20, SW_YELLOW); Debounce sw_green = Debounce(20, SW_GREEN); int motorMode = 0; // 0 STOP,1 right,2 left int timerMode = 0; int timerHour = 0; // 0 0FF, 1 1h ... 12 12h int ledWait = 0; // blink interval. unsigned long lastPushedMs = 0; unsigned long alarmStartMs = 0; unsigned long alarmStopMs = 0; unsigned long motorStopMs = 0; unsigned long MOTOR_RUN_DURATION_MS = 60000; unsigned long SNOOZE_MS = 180000; unsigned long WAIT_MS_PER_PUSH = 3600000; void setup() { int i; Serial.begin(9600); pinMode(FIN, OUTPUT); pinMode(RIN, OUTPUT); pinMode(SW_YELLOW, INPUT); pinMode(SW_GREEN, INPUT); digitalWrite(SW_YELLOW, HIGH); // pull-up digitalWrite(SW_GREEN, HIGH); // pull-up // boot blink sound!! for(i=0; i 3000; i++){ analogWrite(FIN, 255*1/5); analogWrite(RIN, 0); delayMicroseconds(-i/10+350); analogWrite(FIN, 0); analogWrite(RIN, 255*1/5); delayMicroseconds(-i/10+350); #define LED_WAIT 300 if(i%LED_WAIT==0){ if(i/LED_WAIT % 2 == 0){ digitalWrite(LED, HIGH); }else{ digitalWrite(LED, LOW); } } } } void loop(){ motor_loop(); timer_loop(); } void motor_loop() { if(sw_yellow.update() sw_yellow.read()==LOW) { motorMode = (motorMode+1) % 3; motorStopMs = millis() + MOTOR_RUN_DURATION_MS; } switch(motorMode){ case 1 analogWrite(FIN, 255*3/5); analogWrite(RIN, 0); break; case 2 analogWrite(FIN, 0); analogWrite(RIN, 255*3/5); break; default analogWrite(FIN, 0); analogWrite(RIN, 0); break; } if((motorStopMs!=0) (motorStopMs millis())){ motorMode = 0; motorStopMs = 0; } } void timer_loop(){ int i; int pushed = 0; if(sw_green.update() sw_green.read()==LOW){ pushed = 1; lastPushedMs = millis(); } if(timerMode==0){ // nop ledWait = 300; if(pushed){ motorBeep(100, 100); motorBeep(150, 100); motorBeep(200, 100); timerMode = 1; } }else if(timerMode==1){ // setting if(pushed){ timerHour = (timerHour+1)%13; int beepDelay = 600; for(i=0; i timerHour; i++){ beepDelay = beepDelay*20/23; }; motorBeep(beepDelay, 100); if(timerHour==0){ delay(50); motorBeep(beepDelay, 100); } //Serial.println(timerHour); } if((1 =timerHour) (lastPushedMs+10000 millis())){ int beepDelay = 600*20/23; for(i=0; i timerHour; i++){ beepDelay = beepDelay*20/23; motorBeep(beepDelay, 100); delay(100); } alarmStartMs = millis() + timerHour*WAIT_MS_PER_PUSH; //Serial.println(timerHour); timerMode = 2; // goto waiting } ledWait = 0; }else if(timerMode==2){ // waiting ledWait = 2000; if(alarmStartMs millis()){ for(i=0; i 10; i++){ delay(50); motorBeep(100, 100); } alarmStopMs = millis() + MOTOR_RUN_DURATION_MS; motorStopMs = 0; motorMode = 2; timerMode = 3; // goto alarm } //if(millis()%1000==0){ Serial.println(alarmStartMs-millis()); } }else if(timerMode==3){ // alarm!! ledWait = 100; if(alarmStopMs millis()){ for(i=0; i 3; i++){ delay(50); motorBeep(600, 100); } motorMode = 0; timerMode = 4; // goto stop } //if(millis()%1000==0){ Serial.println(alarmStopMs-millis()); } }else if(timerMode==4){ // stop. ledWait = 4000; if(pushed){ motorBeep(700, 500); } if((millis()%SNOOZE_MS)==0){ for(i=10+random(10); 0 =i; i--){ cheep(10+random(50), 100+random(80), 10+random(10), 100+random(300)); } } } // LED 0 OFF, 1+ Nms blink digitalWrite(LED, LOW); if(0 ledWait (millis()/((ledWait+1)/2)%2)==0){ digitalWrite(LED, HIGH); } } // beep from motor void motorBeep(int beepDelay, int lenMs) { digitalWrite(LED, HIGH); unsigned long breakMs = millis()+lenMs; for(;;){ analogWrite(FIN, 255*1/5); analogWrite(RIN, 0); delayMicroseconds(beepDelay); analogWrite(FIN, 0); analogWrite(RIN, 255*1/5); delayMicroseconds(beepDelay); if(breakMs millis()){ break; } } analogWrite(FIN, 0); analogWrite(RIN, 0); digitalWrite(LED, LOW); } // a cheeping little bird void cheep(int start, int end, int sped, int dely) { int i; for(i=start; i end; i+=sped){ motorBeep(i, 10); } delay(dely); } (6)Arduino mega88 (TODO) Arduino2009は他の実験でも使いたいので格安「Arduino mega88 250円」で置き換える。
https://w.atwiki.jp/arduino/pages/36.html
bootloader領域のサイズはfuseで指定できる。 データシート( http //reef.path.ne.jp/~hero/hero.htm )で確認してみると、 diecimila mega168 http //reef.path.ne.jp/~hero/pdf/mega88.pdf extended_fuses=0x00 BOOTSZ1/0=0,0 = 1024word = 2KB 16KB-2KB = 14KB = 1024*14=14336(0x3800) mega8 http //reef.path.ne.jp/~hero/pdf/mega8.pdf high_fuses=0xca BOOTSZ1/0=0,1 = 512word = 1KB 8KB-1KB = 7KB = 1024* 7= 7168(0x1c00) アプリの最大サイズ14336,7168とatmega/Makefile,atmega8/Makefileの--section-start=.text=0x3800/0x1c00に対応している。 http //www.geocities.jp/arduino_diecimila/ http //bird.dip.jp/mt/archives/2008/04/19/1649.html などではupload.maximum_size=7168としているが、 mega88でもefuse=00でbootloader=2KBの設定なので 最大サイズは8K-2K=6K = 6144(0x1800) なのではないか? 6144byte以上のスケッチを書き込むと壊れる?? http //bird.dip.jp/mt/archives/2008/04/19/atmega88.zip http //www.geocities.jp/arduino_diecimila/atmega88.zip http //www.geocities.jp/arduino_diecimila/obaka/project-2/LilyPadBOOT_88.zip % avr-size atmega88/ATmegaBOOT_88_ng.hex text data bss dec hex filename 0 1642 0 1642 66a atmega88/ATmegaBOOT_88_ng.hex % avr-size lilypad88/LilyPadBOOT_88.hex text data bss dec hex filename 0 1960 0 1960 7a8 lilypad88/LilyPadBOOT_88.hex % avr-size atmega/ATmegaBOOT_168_diecimila.hex text data bss dec hex filename 0 1958 0 1958 7a6 atmega/ATmegaBOOT_168_diecimila.hex % avr-size atmega/ATmegaBOOT_168_ng.hex text data bss dec hex filename 0 1702 0 1702 6a6 atmega/ATmegaBOOT_168_ng.hex % avr-size atmega/ATmegaBOOT_168_atmega328.hex text data bss dec hex filename 0 1950 0 1950 79e atmega/ATmegaBOOT_168_atmega328.hex % avr-size atmega/ATmegaBOOT_168_pro_8MHz.hex text data bss dec hex filename 0 1968 0 1968 7b0 atmega/ATmegaBOOT_168_pro_8MHz.hex % avr-size atmega8/ATmegaBOOT.hex text data bss dec hex filename 0 1002 0 1002 3ea atmega8/ATmegaBOOT.hex mega8のbootloaderは1KB以内なので、 mega88等mega8のbootloaderを改造したほうがいいかもしれない。 そうしたら7168byteまで使える。 atmegaとatmega8(とlilypadとbt)はなにが違うのだろうか。特別な機能がある? というか、mega88でarduinoクローンを作るなんて無駄なことはやめて bootloader無しで直接書き込みをする手順を確立したほうが役に立つのではないか。 mega88で8192byteまで使えるようになる。mega168で16384byte、mega328で32768まで。 そもそもarduinoにbootloaderがあるのはなぜか? ↓ AVRライタなしでアプリケーションを書くため。 ↓ AVRライタを持っているならばブートローダ不要。 「完成版をmega88で安くすませる」という目的ならばbitbangでDuemilanoveをAVRライタ化して スケッチ本体をbootloader無しで焼いた方がよいに違いない。 赤外線シリアル通信をするbootloaderを作ったらバカバカしいかもしれない。 単方向通信で光通信でベリファイなしの書き込みとか。 リセットをかけられないか。 そういえば、リセットはどうやっているのだろう。 シリアルの特殊な信号線をつかってるのかな。
https://w.atwiki.jp/hobata/pages/18.html
neko ネコが液晶画面を走り回るデモです。 Arduinoとの接続時の回路図(手書き)とソースは、下のリンクからどうぞ。 BMP085気圧センサ I2Cで制御する気圧・温度センサを動作させました。 3.3V系のArduinoで動作します。 サンプルソースは、(これも)下のリンクからどうぞ。 Wind Chime DC12Vファンからの風で音を鳴らします。 あまりにも、「そのまま」な構造なので、一部の技術志向の方からは、「ドン引き」されてしまった一品です。 アルミ管からの音が魅力の全てです。 風量調整のためにAVRマイコンを使っていますが、プログラムは、大したものではありませんのでUPの予定ナシです。 -
https://w.atwiki.jp/ylabarduino/pages/18.html
この項目では、Arduinoを使用するにあたって必要なソフトウェアをインストールする手順を記述する。 なお、ここではPCとArduinoハードをUSBケーブルで接続する手順を記す。 Arduinoソフトウェアのインストール 1.ソフトウェアをダウンロード Arduinoダウンロード 各OSそれぞれに対応しているので、自分の環境に適したものをダウンロードする。 適当なディレクトリ上で解凍 2.USB Serial Driverをインストール 3.USB接続するのに必要なドライバをインストールする winとmacで異なるので注意。 win mac 最新バージョンでは、上記ページからダウンロードしたディスクイメージの中にドライバのインストーラが含まれている。(ver.0017以降より) アプリケーションのセットアップ Arduinoを起動し、デバイスとSerial Portを設定することで開発環境が整う。 デバイス [Tool]>[Board]>[使用するデバイス]の順に設定。 Serial Port [Tool]>[Serial Port]>[使用するポート]の順に設定。 多くの場合、USB Serial Portを使用するため、[/dev/tty.usbserial-A6008bT1]或いは[/dev/cu.usbserial-A6008bT1]を選択する。これらがリストにない場合、ドライバが正しくインストールされていない可能性が高い。